// modules
const GoodsClassModule = require('../models/tableModels/goodsClassModule')
const GoodsModule = require('../models/tableModels/goodsModule')

// methods
const response = require('../utils/methods/response.js')
const jsonFormat = require('../utils/methods/jsonFormat')

// 商品类型控制器
const goodsClassController = {
    // 获取商品类型列表
    goodsClassList: async (req, res) => {
        try {
            // 查询商品类型列表
            const list = await GoodsClassModule.knexAll()
            response.success(res, list.length ? { list } : null)
        } catch(err) {
            response.error(res, err)
        }
    },
    // 新增商品类型
    addGoodsClass: async ({ body }, res) => {
        try {
            // 格式化参数
            const params = jsonFormat(body)
            // 添加商品类型
            const addRes = await GoodsClassModule.insert(params)
            if (addRes) response.success(res, {})
        } catch(err) {
            response.error(res, err)
        }
    },
    // 修改商品类型
    updateGoodsClass: async ({ body }, res) => {
        try {
            // 格式化参数
            const params = jsonFormat(body)
            // 更新商品类型数据
            const updateResult = await GoodsClassModule.update({ goodsClassId: params.goodsClassId }, params)
            if (updateResult) {
                response.success(res, {})
            } else {
                response.fail(res, '修改失败')
            }
        } catch(err) {
            response.error(res, err)
        }
    },
    // 删除商品类型
    deleteGoodsClass: async ({ query }, res) => {
        try {
            // 判断商品表的 goodsClass 字段中是否存在当前 id
            const isExistGoodsClass = (await GoodsModule.selectGoodsClass(query.goodsClassId))[0]['count(*)']
            // 如果当前商品类型有商品
            if (isExistGoodsClass) {
                response.fail(res, '当前商品类型下存在商品，不能删除！')
            } else {
                // 删除商品类型数据
                const deleteResult = await GoodsClassModule.delete({ goodsClassId: query.goodsClassId })
                if (deleteResult) response.success(res)
            }
        } catch(err) {
            response.error(res, err)
        }
    }
}

module.exports = goodsClassController
